import router from "@/router";
import NProgress from "nprogress";
import "nprogress/nprogress.css";

NProgress.configure({ showSpinner: false }); // 进度条

// const permissionStore = usePermissionStoreHook();

// 白名单路由
const whiteList = ["/dashboard", "/about"];

router.beforeEach(async (to, from, next) => {
  NProgress.start();
  const hasToken = localStorage.getItem("accessToken");
  if (hasToken) {
    if (to.path === "/login") {
      // 如果已登录，跳转首页
      next({ path: "/" });
      NProgress.done();
    } else {
      //   const userStore = useUserStoreHook();
      //   const hasRoles = userStore.user.roles && userStore.user.roles.length > 0;
      //   if (hasRoles) {
      //     // 未匹配到任何路由，跳转404
      //     if (to.matched.length === 0) {
      //       from.name ? next({ name: from.name }) : next("/404");
      //     } else {
      //       next();
      //     }
      //   } else {
      //     try {
      //       const { roles } = await userStore.getInfo();
      //       const accessRoutes = await permissionStore.generateRoutes(roles);
      //       accessRoutes.forEach((route) => {
      //         router.addRoute(route);
      //       });
      //       next({ ...to, replace: true });
      //     } catch (error) {
      //       // 移除 token 并跳转登录页
      //       await userStore.resetStore();
      //       next(`/login?redirect=${to.path}`);
      //       NProgress.done();
      //     }
      //   }
      next();
    }
  } else {
    // 未登录可以访问白名单页面
    if (whiteList.indexOf(to.path) !== -1) {
      next();
    } else {
      next(`/login?redirect=${to.path}`);
      NProgress.done();
    }
  }
});

router.afterEach(() => {
  NProgress.done();
});
